{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "wHsFZo6akD8M",
        "outputId": "f3e0fd8f-9804-4a27-f397-fa12299508bc"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Files already downloaded and verified\n",
            "Files already downloaded and verified\n"
          ]
        }
      ],
      "source": [
        "import torch\n",
        "import torchvision\n",
        "import torchvision.transforms as transforms\n",
        "\n",
        "transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
        "batch_size = 8\n",
        "train_dataset = torchvision.datasets.cifar.CIFAR100(root='cifar100', train=True, transform=transform, download=True)\n",
        "test_dataset = torchvision.datasets.cifar.CIFAR100(root='cifar100', train=False, transform=transform, download=True)\n",
        "train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=2)\n",
        "test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False, num_workers=2)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 147
        },
        "id": "VjkCK8NykPMb",
        "outputId": "9b0e01d4-7c67-48dc-9aea-f922fe9fa8b9"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "torch.Size([8])\n"
          ]
        }
      ],
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
        "# functions to show an image\n",
        "\n",
        "\n",
        "def imshow(img):\n",
        "    img = img / 2 + 0.5     # unnormalize\n",
        "    npimg = img.numpy()\n",
        "    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
        "    plt.show()\n",
        "\n",
        "\n",
        "# get some random training images\n",
        "dataiter = iter(train_loader)\n",
        "# images, labels = dataiter.next()\n",
        "images, labels = next(dataiter)\n",
        "\n",
        "# show images\n",
        "imshow(torchvision.utils.make_grid(images))\n",
        "# print labels\n",
        "print(labels.shape)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "id": "QY16Ypg6KVrS"
      },
      "outputs": [],
      "source": [
        "import torch\n",
        "import torch.nn as nn\n",
        "\n",
        "class Mlp(nn.Module):\n",
        "    def __init__(self, in_features, hidden_features=None, out_features=None, act_layer=nn.GELU, drop=0.):\n",
        "        super().__init__()\n",
        "        out_features = out_features or in_features\n",
        "        hidden_features = hidden_features or in_features\n",
        "        self.fc1 = nn.Linear(in_features, hidden_features)\n",
        "        self.act = act_layer()\n",
        "        self.fc2 = nn.Linear(hidden_features, out_features)\n",
        "        self.drop = nn.Dropout(drop)\n",
        "\n",
        "    def forward(self, x):\n",
        "        x = self.fc1(x)\n",
        "        x = self.act(x)\n",
        "        x = self.drop(x)\n",
        "        x = self.fc2(x)\n",
        "        x = self.drop(x)\n",
        "        return x\n",
        "\n",
        "class BasicConv(nn.Module):\n",
        "    def __init__(\n",
        "        self,\n",
        "        in_planes,\n",
        "        out_planes,\n",
        "        kernel_size,\n",
        "        stride=1,\n",
        "        padding=0,\n",
        "        dilation=1,\n",
        "        groups=1,\n",
        "        relu=True,\n",
        "        bn=True,\n",
        "        bias=False,\n",
        "    ):\n",
        "        super(BasicConv, self).__init__()\n",
        "        self.out_channels = out_planes\n",
        "        self.conv = nn.Conv2d(\n",
        "            in_planes,\n",
        "            out_planes,\n",
        "            kernel_size=kernel_size,\n",
        "            stride=stride,\n",
        "            padding=padding,\n",
        "            dilation=dilation,\n",
        "            groups=groups,\n",
        "            bias=bias,\n",
        "        )\n",
        "        self.bn = (\n",
        "            nn.BatchNorm2d(out_planes, eps=1e-5, momentum=0.01, affine=True)\n",
        "            if bn\n",
        "            else None\n",
        "        )\n",
        "        self.relu = nn.ReLU() if relu else None\n",
        "\n",
        "    def forward(self, x):\n",
        "        x = self.conv(x)\n",
        "        if self.bn is not None:\n",
        "            x = self.bn(x)\n",
        "        if self.relu is not None:\n",
        "            x = self.relu(x)\n",
        "        return x\n",
        "\n",
        "\n",
        "class ChannelPool(nn.Module):\n",
        "    def forward(self, x):\n",
        "        return torch.cat(\n",
        "            (torch.max(x, 1)[0].unsqueeze(1), torch.mean(x, 1).unsqueeze(1)), dim=1\n",
        "        )\n",
        "\n",
        "\n",
        "class SpatialGate(nn.Module):\n",
        "    def __init__(self):\n",
        "        super(SpatialGate, self).__init__()\n",
        "        kernel_size = 7\n",
        "        self.compress = ChannelPool()\n",
        "        self.spatial = BasicConv(\n",
        "            2, 1, kernel_size, stride=1, padding=(kernel_size - 1) // 2, relu=False\n",
        "        )\n",
        "\n",
        "    def forward(self, x):\n",
        "        x_compress = self.compress(x)\n",
        "        x_out = self.spatial(x_compress)\n",
        "        scale = torch.sigmoid_(x_out)\n",
        "        return x * scale\n",
        "\n",
        "class reweight(nn.Module):\n",
        "    def __init__(self):\n",
        "        super(reweight, self).__init__()\n",
        "        self.mlp = Mlp(6,10,3)\n",
        "        self.soft = nn.Softmax(dim=1)\n",
        "\n",
        "    def forward(self,x1,x2,x3):\n",
        "        b,c,h,w=x1.shape\n",
        "        x1_f = x1.reshape(b, -1)\n",
        "        x2_f = x2.reshape(b, -1)\n",
        "        x3_f = x3.reshape(b, -1)\n",
        "        x1_in = torch.cat((x1_f.max(1)[0].reshape(b, -1),\n",
        "                           x1_f.mean(1).reshape(b, -1)),\n",
        "                          dim=1)\n",
        "        x2_in = torch.cat((x2_f.max(1)[0].reshape(b, -1),\n",
        "                           x2_f.mean(1).reshape(b, -1)),\n",
        "                          dim=1)\n",
        "        x3_in = torch.cat((x3_f.max(1)[0].reshape(b, -1),\n",
        "                           x3_f.mean(1).reshape(b, -1)),\n",
        "                          dim=1)\n",
        "        mlp_input=torch.cat((torch.cat((x1_in,x2_in),dim=1),x3_in),dim=1)\n",
        "        weight = self.mlp(mlp_input)\n",
        "        weight = self.soft(weight)\n",
        "\n",
        "        out = (weight[:, 0]).reshape(b, 1, 1, 1) * x1 + (weight[:, 1]).reshape(b, 1, 1, 1) * x2 + (\n",
        "        weight[:, 2]).reshape(b, 1, 1, 1) * x3\n",
        "\n",
        "        return out\n",
        "\n",
        "class TripletAttention(nn.Module):\n",
        "    def __init__(\n",
        "        self,\n",
        "        gate_channels,\n",
        "        reduction_ratio=16,\n",
        "        pool_types=[\"avg\", \"max\"],\n",
        "        no_spatial=False,\n",
        "    ):\n",
        "        super(TripletAttention, self).__init__()\n",
        "        self.ChannelGateH = SpatialGate()\n",
        "        self.ChannelGateW = SpatialGate()\n",
        "        self.no_spatial = no_spatial\n",
        "        if not no_spatial:\n",
        "            self.SpatialGate = SpatialGate()\n",
        "            self.re = reweight()\n",
        "\n",
        "\n",
        "\n",
        "    def forward(self, x):\n",
        "        x_perm1 = x.permute(0, 2, 1, 3).contiguous()\n",
        "        x_out1 = self.ChannelGateH(x_perm1)\n",
        "        x_out11 = x_out1.permute(0, 2, 1, 3).contiguous()\n",
        "        x_perm2 = x.permute(0, 3, 2, 1).contiguous()\n",
        "        x_out2 = self.ChannelGateW(x_perm2)\n",
        "        x_out21 = x_out2.permute(0, 3, 2, 1).contiguous()\n",
        "        if not self.no_spatial:\n",
        "            x_out = self.SpatialGate(x)\n",
        "            # x_out = (1 / 3) * (x_out + x_out11 + x_out21)\n",
        "            x_out = self.re(x_out,x_out11,x_out21)\n",
        "        else:\n",
        "            x_out = (1 / 2) * (x_out11 + x_out21)\n",
        "        return x_out\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "1mY2iwmCkcpA"
      },
      "outputs": [],
      "source": [
        "\n",
        "import math\n",
        "\n",
        "import torch\n",
        "import torch.nn as nn\n",
        "import torch.nn.functional as F\n",
        "from torch.nn import init\n",
        "\n",
        "\n",
        "def conv3x3(in_planes, out_planes, stride=1):\n",
        "    \"3x3 convolution with padding\"\n",
        "    return nn.Conv2d(\n",
        "        in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False\n",
        "    )\n",
        "\n",
        "\n",
        "class BasicBlock(nn.Module):\n",
        "    expansion = 1\n",
        "\n",
        "    def __init__(\n",
        "        self, inplanes, planes, stride=1, downsample=None, use_triplet_attention=False\n",
        "    ):\n",
        "        super(BasicBlock, self).__init__()\n",
        "        self.conv1 = conv3x3(inplanes, planes, stride)\n",
        "        self.bn1 = nn.BatchNorm2d(planes)\n",
        "        self.relu = nn.ReLU(inplace=True)\n",
        "        self.conv2 = conv3x3(planes, planes)\n",
        "        self.bn2 = nn.BatchNorm2d(planes)\n",
        "        self.downsample = downsample\n",
        "        self.stride = stride\n",
        "\n",
        "        if use_triplet_attention:\n",
        "            self.triplet_attention = TripletAttention(planes, 16)\n",
        "        else:\n",
        "            self.triplet_attention = None\n",
        "\n",
        "    def forward(self, x):\n",
        "        residual = x\n",
        "\n",
        "        out = self.conv1(x)\n",
        "        out = self.bn1(out)\n",
        "        out = self.relu(out)\n",
        "\n",
        "        out = self.conv2(out)\n",
        "        out = self.bn2(out)\n",
        "\n",
        "        if self.downsample is not None:\n",
        "            residual = self.downsample(x)\n",
        "\n",
        "        if not self.triplet_attention is None:\n",
        "            out = self.triplet_attention(out)\n",
        "\n",
        "        out += residual\n",
        "        out = self.relu(out)\n",
        "\n",
        "        return out\n",
        "\n",
        "\n",
        "class Bottleneck(nn.Module):\n",
        "    expansion = 4\n",
        "\n",
        "    def __init__(\n",
        "        self, inplanes, planes, stride=1, downsample=None, use_triplet_attention=False\n",
        "    ):\n",
        "        super(Bottleneck, self).__init__()\n",
        "        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)\n",
        "        self.bn1 = nn.BatchNorm2d(planes)\n",
        "        self.conv2 = nn.Conv2d(\n",
        "            planes, planes, kernel_size=3, stride=stride, padding=1, bias=False\n",
        "        )\n",
        "        self.bn2 = nn.BatchNorm2d(planes)\n",
        "        self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)\n",
        "        self.bn3 = nn.BatchNorm2d(planes * 4)\n",
        "        self.relu = nn.ReLU(inplace=True)\n",
        "        self.downsample = downsample\n",
        "        self.stride = stride\n",
        "\n",
        "        if use_triplet_attention:\n",
        "            self.triplet_attention = TripletAttention(planes * 4, 16)\n",
        "        else:\n",
        "            self.triplet_attention = None\n",
        "\n",
        "    def forward(self, x):\n",
        "        residual = x\n",
        "\n",
        "        out = self.conv1(x)\n",
        "        out = self.bn1(out)\n",
        "        out = self.relu(out)\n",
        "\n",
        "        out = self.conv2(out)\n",
        "        out = self.bn2(out)\n",
        "        out = self.relu(out)\n",
        "\n",
        "        out = self.conv3(out)\n",
        "        out = self.bn3(out)\n",
        "\n",
        "        if self.downsample is not None:\n",
        "            residual = self.downsample(x)\n",
        "\n",
        "        if not self.triplet_attention is None:\n",
        "            out = self.triplet_attention(out)\n",
        "\n",
        "        out += residual\n",
        "        out = self.relu(out)\n",
        "\n",
        "        return out\n",
        "\n",
        "\n",
        "class ResNet(nn.Module):\n",
        "    def __init__(self, block, layers, network_type, num_classes, att_type=None):\n",
        "        self.inplanes = 64\n",
        "        super(ResNet, self).__init__()\n",
        "        self.network_type = network_type\n",
        "        # different model config between ImageNet and CIFAR\n",
        "        if network_type == \"ImageNet\":\n",
        "            self.conv1 = nn.Conv2d(\n",
        "                3, 64, kernel_size=7, stride=2, padding=3, bias=False\n",
        "            )\n",
        "            self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n",
        "            self.avgpool = nn.AvgPool2d(7)\n",
        "        else:\n",
        "            self.conv1 = nn.Conv2d(\n",
        "                3, 64, kernel_size=3, stride=1, padding=1, bias=False\n",
        "            )\n",
        "\n",
        "        self.bn1 = nn.BatchNorm2d(64)\n",
        "        self.relu = nn.ReLU(inplace=True)\n",
        "\n",
        "        self.layer1 = self._make_layer(block, 64, layers[0], att_type=att_type)\n",
        "        self.layer2 = self._make_layer(\n",
        "            block, 128, layers[1], stride=2, att_type=att_type\n",
        "        )\n",
        "        self.layer3 = self._make_layer(\n",
        "            block, 256, layers[2], stride=2, att_type=att_type\n",
        "        )\n",
        "        self.layer4 = self._make_layer(\n",
        "            block, 512, layers[3], stride=2, att_type=att_type\n",
        "        )\n",
        "\n",
        "        self.fc = nn.Linear(512 * block.expansion, num_classes)\n",
        "\n",
        "        init.kaiming_normal_(self.fc.weight)\n",
        "        for key in self.state_dict():\n",
        "            if key.split(\".\")[-1] == \"weight\":\n",
        "                if \"conv\" in key:\n",
        "                    init.kaiming_normal_(self.state_dict()[key], mode=\"fan_out\")\n",
        "                if \"bn\" in key:\n",
        "                    if \"SpatialGate\" in key:\n",
        "                        self.state_dict()[key][...] = 0\n",
        "                    else:\n",
        "                        self.state_dict()[key][...] = 1\n",
        "            elif key.split(\".\")[-1] == \"bias\":\n",
        "                self.state_dict()[key][...] = 0\n",
        "\n",
        "    def _make_layer(self, block, planes, blocks, stride=1, att_type=None):\n",
        "        downsample = None\n",
        "        if stride != 1 or self.inplanes != planes * block.expansion:\n",
        "            downsample = nn.Sequential(\n",
        "                nn.Conv2d(\n",
        "                    self.inplanes,\n",
        "                    planes * block.expansion,\n",
        "                    kernel_size=1,\n",
        "                    stride=stride,\n",
        "                    bias=False,\n",
        "                ),\n",
        "                nn.BatchNorm2d(planes * block.expansion),\n",
        "            )\n",
        "\n",
        "        layers = []\n",
        "        layers.append(\n",
        "            block(\n",
        "                self.inplanes,\n",
        "                planes,\n",
        "                stride,\n",
        "                downsample,\n",
        "                use_triplet_attention=att_type == \"TripletAttention\",\n",
        "            )\n",
        "        )\n",
        "        self.inplanes = planes * block.expansion\n",
        "        for i in range(1, blocks):\n",
        "            layers.append(\n",
        "                block(\n",
        "                    self.inplanes,\n",
        "                    planes,\n",
        "                    use_triplet_attention=att_type == \"TripletAttention\",\n",
        "                )\n",
        "            )\n",
        "\n",
        "        return nn.Sequential(*layers)\n",
        "\n",
        "    def forward(self, x):\n",
        "        x = self.conv1(x)\n",
        "        x = self.bn1(x)\n",
        "        x = self.relu(x)\n",
        "        if self.network_type == \"ImageNet\":\n",
        "            x = self.maxpool(x)\n",
        "\n",
        "        x = self.layer1(x)\n",
        "        x = self.layer2(x)\n",
        "        x = self.layer3(x)\n",
        "        x = self.layer4(x)\n",
        "\n",
        "        if self.network_type == \"ImageNet\":\n",
        "            x = self.avgpool(x)\n",
        "        else:\n",
        "            x = F.avg_pool2d(x, 4)\n",
        "        x = x.view(x.size(0), -1)\n",
        "        x = self.fc(x)\n",
        "        return x\n",
        "\n",
        "\n",
        "def ResidualNet(network_type, depth, num_classes, att_type):\n",
        "\n",
        "    assert network_type in [\n",
        "        \"ImageNet\",\n",
        "        \"CIFAR10\",\n",
        "        \"CIFAR100\",\n",
        "    ], \"network type should be ImageNet or CIFAR10 / CIFAR100\"\n",
        "    assert depth in [18, 34, 50, 101], \"network depth should be 18, 34, 50 or 101\"\n",
        "\n",
        "    if depth == 18:\n",
        "        model = ResNet(BasicBlock, [2, 2, 2, 2], network_type, num_classes, att_type)\n",
        "\n",
        "    elif depth == 34:\n",
        "        model = ResNet(BasicBlock, [3, 4, 6, 3], network_type, num_classes, att_type)\n",
        "\n",
        "    elif depth == 50:\n",
        "        model = ResNet(Bottleneck, [3, 4, 6, 3], network_type, num_classes, att_type)\n",
        "\n",
        "    elif depth == 101:\n",
        "        model = ResNet(Bottleneck, [3, 4, 23, 3], network_type, num_classes, att_type)\n",
        "\n",
        "    return model\n",
        "\n",
        "# if __name__==\"__main__\":\n",
        "#     net=ResidualNet(\"CIFAR100\",34,10,\"TripletAttention\")\n",
        "#     print(net)\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "otA9CIgdnXfW",
        "outputId": "fb5b3732-d315-494a-e0ad-3c07b12b2c13"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ResNet(\n",
            "  (conv1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "  (relu): ReLU(inplace=True)\n",
            "  (layer1): Sequential(\n",
            "    (0): BasicBlock(\n",
            "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "    (1): BasicBlock(\n",
            "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "  )\n",
            "  (layer2): Sequential(\n",
            "    (0): BasicBlock(\n",
            "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (downsample): Sequential(\n",
            "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
            "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      )\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "    (1): BasicBlock(\n",
            "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "  )\n",
            "  (layer3): Sequential(\n",
            "    (0): BasicBlock(\n",
            "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (downsample): Sequential(\n",
            "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
            "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      )\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "    (1): BasicBlock(\n",
            "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "  )\n",
            "  (layer4): Sequential(\n",
            "    (0): BasicBlock(\n",
            "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (downsample): Sequential(\n",
            "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
            "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      )\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "    (1): BasicBlock(\n",
            "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (relu): ReLU(inplace=True)\n",
            "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
            "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
            "      (triplet_attention): TripletAttention(\n",
            "        (ChannelGateH): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (ChannelGateW): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (SpatialGate): SpatialGate(\n",
            "          (compress): ChannelPool()\n",
            "          (spatial): BasicConv(\n",
            "            (conv): Conv2d(2, 1, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), bias=False)\n",
            "            (bn): BatchNorm2d(1, eps=1e-05, momentum=0.01, affine=True, track_running_stats=True)\n",
            "          )\n",
            "        )\n",
            "        (re): reweight(\n",
            "          (mlp): Mlp(\n",
            "            (fc1): Linear(in_features=6, out_features=10, bias=True)\n",
            "            (act): GELU(approximate='none')\n",
            "            (fc2): Linear(in_features=10, out_features=3, bias=True)\n",
            "            (drop): Dropout(p=0.0, inplace=False)\n",
            "          )\n",
            "          (soft): Softmax(dim=1)\n",
            "        )\n",
            "      )\n",
            "    )\n",
            "  )\n",
            "  (fc): Linear(in_features=512, out_features=100, bias=True)\n",
            ")\n"
          ]
        }
      ],
      "source": [
        "device=\"cuda\"\n",
        "net=ResidualNet(\"CIFAR100\",18,100,\"TripletAttention\").to(device)\n",
        "# net=ResidualNet(\"CIFAR100\",18,100,None).to(device)\n",
        "print(net)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "35VI01P_kqal",
        "outputId": "d40475e6-a6e9-4b82-d839-6c8b7a196653"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "6250\n"
          ]
        }
      ],
      "source": [
        "import torch.optim as optim\n",
        "\n",
        "criterion = nn.CrossEntropyLoss()\n",
        "optimizer = torch.optim.Adam(net.parameters(), lr=0.0005)\n",
        "print(len(train_loader))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "id": "ck0do7nrmNTQ"
      },
      "outputs": [],
      "source": []
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "id": "xKlx2mCxlE02"
      },
      "outputs": [],
      "source": [
        "from tqdm import tqdm\n",
        "def train(epoch):\n",
        "    net.train()\n",
        "    # Loop over each batch from the training set\n",
        "    train_tqdm = tqdm(train_loader, desc=\"Epoch \" + str(epoch))\n",
        "    for batch_idx, (data, target) in enumerate(train_tqdm):\n",
        "        # Copy data to GPU if needed\n",
        "        data = data.to(device)\n",
        "        target = target.to(device)\n",
        "        # Zero gradient buffers\n",
        "        optimizer.zero_grad()\n",
        "        # Pass data through the network\n",
        "        output = net(data)\n",
        "        # Calculate loss\n",
        "        loss = criterion(output, target)\n",
        "        # Backpropagate\n",
        "        loss.backward()\n",
        "        # Update weights\n",
        "        optimizer.step()  # w - alpha * dL / dw\n",
        "        train_tqdm.set_postfix({\"loss\": \"%.3g\" % loss.item()})\n",
        "\n",
        "def validate(lossv,top1AccuracyList,top5AccuracyList):\n",
        "    net.eval()\n",
        "    val_loss = 0\n",
        "    top1Correct = 0\n",
        "    top5Correct = 0\n",
        "    for index,(data, target) in enumerate(test_loader):\n",
        "        data = data.to(device)\n",
        "        labels = target.to(device)\n",
        "        outputs = net(data)\n",
        "        val_loss += criterion(outputs, labels).data.item()\n",
        "        _, top1Predicted = torch.max(outputs.data, 1)\n",
        "        top5Predicted = torch.topk(outputs.data, k=5, dim=1, largest=True)[1]\n",
        "        top1Correct += (top1Predicted == labels).cpu().sum().item()\n",
        "        label_resize = labels.view(-1, 1).expand_as(top5Predicted)\n",
        "        top5Correct += torch.eq(top5Predicted, label_resize).view(-1).cpu().sum().float().item()\n",
        "\n",
        "    val_loss /= len(test_loader)\n",
        "    lossv.append(val_loss)\n",
        "\n",
        "    top1Acc=100*top1Correct / len(test_loader.dataset)\n",
        "    top5Acc=100*top5Correct / len(test_loader.dataset)\n",
        "    top1AccuracyList.append(top1Acc)\n",
        "    top5AccuracyList.append(top5Acc)\n",
        "    \n",
        "    print('\\nValidation set: Average loss: {:.4f}, Top1Accuracy: {}/{} ({:.0f}%) Top5Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
        "        val_loss, top1Correct, len(test_loader.dataset), top1Acc,top5Correct, len(test_loader.dataset), top5Acc))\n",
        "#     accuracy = 100. * correct.to(torch.float32) / len(testloader.dataset)\n",
        "#     accv.append(accuracy)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "pTWz8B3Dl9gu",
        "outputId": "1f41cc3e-4a32-40e8-ba75-99afafb9569a"
      },
      "outputs": [
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 0: 100%|██████████| 6250/6250 [05:13<00:00, 19.91it/s, loss=2.1]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 2.5208, Top1Accuracy: 3408/10000 (34%) Top5Accuracy: 6734.0/10000 (67%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 1: 100%|██████████| 6250/6250 [05:09<00:00, 20.17it/s, loss=1.69]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 1.9833, Top1Accuracy: 4641/10000 (46%) Top5Accuracy: 7780.0/10000 (78%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 2: 100%|██████████| 6250/6250 [05:11<00:00, 20.04it/s, loss=1.99]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 1.7331, Top1Accuracy: 5243/10000 (52%) Top5Accuracy: 8216.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 3: 100%|██████████| 6250/6250 [05:04<00:00, 20.49it/s, loss=1.19]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 1.6942, Top1Accuracy: 5459/10000 (55%) Top5Accuracy: 8335.0/10000 (83%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 4: 100%|██████████| 6250/6250 [05:05<00:00, 20.43it/s, loss=0.512]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 1.6742, Top1Accuracy: 5600/10000 (56%) Top5Accuracy: 8412.0/10000 (84%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 5: 100%|██████████| 6250/6250 [05:02<00:00, 20.65it/s, loss=0.549]\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "Validation set: Average loss: 1.8296, Top1Accuracy: 5508/10000 (55%) Top5Accuracy: 8334.0/10000 (83%)\n",
            "\n"
          ]
        },
        {
          "metadata": {
            "tags": null
          },
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Epoch 6: 100%|██████████| 6250/6250 [05:02<00:00, 20.68it/s, loss=0.214]\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 1.9933, Top1Accuracy: 5467/10000 (55%) Top5Accuracy: 8226.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 1.9933, Top1Accuracy: 5467/10000 (55%) Top5Accuracy: 8226.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 1.9933, Top1Accuracy: 5467/10000 (55%) Top5Accuracy: 8226.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 7: 100%|██████████| 6250/6250 [05:23<00:00, 19.31it/s, loss=0.919]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.0682, Top1Accuracy: 5521/10000 (55%) Top5Accuracy: 8248.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.0682, Top1Accuracy: 5521/10000 (55%) Top5Accuracy: 8248.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.0682, Top1Accuracy: 5521/10000 (55%) Top5Accuracy: 8248.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 8: 100%|██████████| 6250/6250 [05:23<00:00, 19.33it/s, loss=0.0078]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.2495, Top1Accuracy: 5432/10000 (54%) Top5Accuracy: 8174.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2495, Top1Accuracy: 5432/10000 (54%) Top5Accuracy: 8174.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2495, Top1Accuracy: 5432/10000 (54%) Top5Accuracy: 8174.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 9: 100%|██████████| 6250/6250 [05:28<00:00, 19.04it/s, loss=0.372]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.2357, Top1Accuracy: 5487/10000 (55%) Top5Accuracy: 8215.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2357, Top1Accuracy: 5487/10000 (55%) Top5Accuracy: 8215.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2357, Top1Accuracy: 5487/10000 (55%) Top5Accuracy: 8215.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 10: 100%|██████████| 6250/6250 [05:36<00:00, 18.55it/s, loss=0.0265]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.2315, Top1Accuracy: 5588/10000 (56%) Top5Accuracy: 8268.0/10000 (83%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2315, Top1Accuracy: 5588/10000 (56%) Top5Accuracy: 8268.0/10000 (83%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.2315, Top1Accuracy: 5588/10000 (56%) Top5Accuracy: 8268.0/10000 (83%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 11: 100%|██████████| 6250/6250 [05:28<00:00, 19.02it/s, loss=0.987]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.3784, Top1Accuracy: 5488/10000 (55%) Top5Accuracy: 8146.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.3784, Top1Accuracy: 5488/10000 (55%) Top5Accuracy: 8146.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.3784, Top1Accuracy: 5488/10000 (55%) Top5Accuracy: 8146.0/10000 (81%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 12: 100%|██████████| 6250/6250 [05:29<00:00, 18.94it/s, loss=0.45]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.4991, Top1Accuracy: 5402/10000 (54%) Top5Accuracy: 8085.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.4991, Top1Accuracy: 5402/10000 (54%) Top5Accuracy: 8085.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.4991, Top1Accuracy: 5402/10000 (54%) Top5Accuracy: 8085.0/10000 (81%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 13: 100%|██████████| 6250/6250 [05:29<00:00, 18.97it/s, loss=0.0291]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.5028, Top1Accuracy: 5419/10000 (54%) Top5Accuracy: 8133.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.5028, Top1Accuracy: 5419/10000 (54%) Top5Accuracy: 8133.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.5028, Top1Accuracy: 5419/10000 (54%) Top5Accuracy: 8133.0/10000 (81%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 14: 100%|██████████| 6250/6250 [05:28<00:00, 19.05it/s, loss=0.25]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.4843, Top1Accuracy: 5545/10000 (55%) Top5Accuracy: 8189.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.4843, Top1Accuracy: 5545/10000 (55%) Top5Accuracy: 8189.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.4843, Top1Accuracy: 5545/10000 (55%) Top5Accuracy: 8189.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 15: 100%|██████████| 6250/6250 [05:26<00:00, 19.13it/s, loss=0.0662]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.5193, Top1Accuracy: 5530/10000 (55%) Top5Accuracy: 8173.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.5193, Top1Accuracy: 5530/10000 (55%) Top5Accuracy: 8173.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.5193, Top1Accuracy: 5530/10000 (55%) Top5Accuracy: 8173.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 16: 100%|██████████| 6250/6250 [05:26<00:00, 19.12it/s, loss=0.858]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.6017, Top1Accuracy: 5428/10000 (54%) Top5Accuracy: 8126.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6017, Top1Accuracy: 5428/10000 (54%) Top5Accuracy: 8126.0/10000 (81%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6017, Top1Accuracy: 5428/10000 (54%) Top5Accuracy: 8126.0/10000 (81%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 17: 100%|██████████| 6250/6250 [05:23<00:00, 19.35it/s, loss=0.0523]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.6052, Top1Accuracy: 5505/10000 (55%) Top5Accuracy: 8175.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6052, Top1Accuracy: 5505/10000 (55%) Top5Accuracy: 8175.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6052, Top1Accuracy: 5505/10000 (55%) Top5Accuracy: 8175.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 18: 100%|██████████| 6250/6250 [05:24<00:00, 19.28it/s, loss=0.0115]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.6886, Top1Accuracy: 5465/10000 (55%) Top5Accuracy: 8181.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6886, Top1Accuracy: 5465/10000 (55%) Top5Accuracy: 8181.0/10000 (82%)\n",
            "\n",
            "\n",
            "Validation set: Average loss: 2.6886, Top1Accuracy: 5465/10000 (55%) Top5Accuracy: 8181.0/10000 (82%)\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Epoch 19: 100%|██████████| 6250/6250 [05:28<00:00, 19.04it/s, loss=0.0284]\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Validation set: Average loss: 2.6651, Top1Accuracy: 5499/10000 (55%) Top5Accuracy: 8164.0/10000 (82%)\n",
            "\n",
            "Finished Training\n",
            "\n",
            "Validation set: Average loss: 2.6651, Top1Accuracy: 5499/10000 (55%) Top5Accuracy: 8164.0/10000 (82%)\n",
            "\n",
            "Finished Training\n",
            "\n",
            "Validation set: Average loss: 2.6651, Top1Accuracy: 5499/10000 (55%) Top5Accuracy: 8164.0/10000 (82%)\n",
            "\n",
            "Finished Training\n"
          ]
        }
      ],
      "source": [
        "lossv = []\n",
        "top1AccuracyList = []   # top1准确率列表\n",
        "top5AccuracyList = []   # top5准确率列表\n",
        "max_epoch = 20\n",
        "for epoch in range(max_epoch):  # loop over the dataset multiple times\n",
        "    train(epoch)\n",
        "    with torch.no_grad():\n",
        "        validate(lossv,top1AccuracyList,top5AccuracyList)\n",
        "        \n",
        "print('Finished Training')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "5qEPmaZO1NU3"
      },
      "outputs": [],
      "source": []
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 925
        },
        "id": "Z1-D3LkhvzDq",
        "outputId": "d062e062-3aa7-49aa-e1b5-c852629a4616"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0.5, 1.0, 'validation top5 accuracy')"
            ]
          },
          "metadata": {},
          "execution_count": 9
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 500x300 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbcAAAEpCAYAAAAQ+2zYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+30lEQVR4nO3deVxU9f4/8NcMMMM+gDAssgi4YC5o5p5LSW4tYptZ38yrlRWWtnyv2e+WeZdov3W1zPqmtpmm16XUTFLBUswNF1BRlH0XZIYdZubz+wOZHFkHB4aZeT0fj3nIHM6Z857jwItzzvt8jkQIIUBERGRFpOYugIiIyNQYbkREZHUYbkREZHUYbkREZHUYbkREZHUYbkREZHUYbkREZHUYbkREZHUYbkREZHUYbkQ3WLduHSQSCTIyMvTTJk6ciIkTJ7a5bHx8PCQSCeLj401ak0QiwZtvvmnS12yPN998ExKJpMvXS3SzGG5E3cSuXbvMEmBE1sje3AUQWYI9e/Z0+jp27dqFTz75pNmAq66uhr09f1yJ2os/LUTtIJPJzLp+R0dHs66fyNLwsCRZtM2bN0MikSAhIaHJ91avXg2JRILk5GQAwOnTpzF37lyEhYXB0dERfn5+mDdvHkpKStpcT3Pn3HJychAdHQ0XFxcolUq8+OKLqK2tbbLsb7/9hoceegjBwcGQy+UICgrCiy++iOrqav08c+fOxSeffAKg4fxa46NRc+fckpKSMG3aNLi7u8PV1RWTJk3C4cOHDeZpPH948OBBvPTSS/Dx8YGLiwtmzpyJ4uLiNt93czQaDf7xj38gPDwccrkcvXr1wmuvvdbkvR87dgxTpkyBt7c3nJycEBoainnz5hnMs2HDBgwbNgxubm5wd3fHoEGD8PHHH3eoLqLrcc+NLNrdd98NV1dX/PDDD5gwYYLB9zZu3IgBAwZg4MCBAIC4uDhcvnwZf/nLX+Dn54eUlBR8/vnnSElJweHDh41qnKiursakSZOQlZWFF154AQEBAfjmm2+wb9++JvNu2rQJVVVVePbZZ9GjRw8cOXIEK1asQE5ODjZt2gQAWLBgAfLy8hAXF4dvvvmmzfWnpKRg3LhxcHd3x1//+lc4ODhg9erVmDhxIhISEjBy5EiD+Z9//nl4enpi2bJlyMjIwEcffYSFCxdi48aN7X7PjZ588kl89dVXePDBB/Hyyy/jjz/+QGxsLM6dO4etW7cCAIqKijB58mT4+Pjg1VdfhYeHBzIyMrBlyxb968TFxWH27NmYNGkS3nnnHQDAuXPncPDgQSxatMjouogMCCILN3v2bKFUKoVGo9FPy8/PF1KpVPz973/XT6uqqmqy7Pfffy8AiAMHDuinrV27VgAQ6enp+mkTJkwQEyZM0D//6KOPBADxww8/6KdVVlaK3r17CwBi//79ra43NjZWSCQSkZmZqZ8WExMjWvqRBCCWLVumfx4dHS1kMpm4dOmSflpeXp5wc3MT48ePb/JeoqKihE6n009/8cUXhZ2dnSgrK2t2fY2WLVtmUNPJkycFAPHkk08azPfKK68IAGLfvn1CCCG2bt0qAIijR4+2+NqLFi0S7u7uBv9vRKbCw5Jk8WbNmoWioiKD9vvNmzdDp9Nh1qxZ+mlOTk76r2tqanDlyhWMGjUKAHDixAmj1rlr1y74+/vjwQcf1E9zdnbG008/3WTe69dbWVmJK1euYMyYMRBCICkpyaj1AoBWq8WePXsQHR2NsLAw/XR/f388+uij+P3336FWqw2Wefrppw32TMeNGwetVovMzEyj1r1r1y4AwEsvvWQw/eWXXwYA7Ny5EwDg4eEBANixYwfq6+ubfS0PDw9UVlYiLi7OqBqI2oPhRhZv6tSpUCgUBofYNm7ciCFDhqBv3776aaWlpVi0aBF8fX3h5OQEHx8fhIaGAgBUKpVR68zMzETv3r2bHMrs169fk3mzsrIwd+5ceHl5wdXVFT4+PvpDqMauFwCKi4tRVVXV7Lr69+8PnU6H7Oxsg+nBwcEGzz09PQEAV69eNWrdmZmZkEql6N27t8F0Pz8/eHh46MNywoQJeOCBB7B8+XJ4e3tjxowZWLt2rcF5ueeeew59+/bFtGnTEBgYiHnz5mH37t1G1UPUEoYbWTy5XI7o6Ghs3boVGo0Gubm5OHjwoMFeGwA8/PDD+OKLL/DMM89gy5Yt2LNnj/6XqU6n65TatFot7rrrLuzcuRNLlizBtm3bEBcXh3Xr1nXqem9kZ2fX7HQhRIder63zkxKJBJs3b0ZiYiIWLlyI3NxczJs3D8OGDUNFRQUAQKlU4uTJk/jxxx9x3333Yf/+/Zg2bRqeeOKJDtVEdD2GG1mFWbNm4cqVK9i7dy82bdoEIYRBuF29ehV79+7Fq6++iuXLl2PmzJm46667DA7rGSMkJASXLl1qEg6pqakGz8+cOYMLFy7ggw8+wJIlSzBjxgxERUUhICCgyWu2t6HFx8cHzs7OTdYFAOfPn4dUKkVQUJAR76b9QkJCoNPpcPHiRYPphYWFKCsrQ0hIiMH0UaNG4V//+heOHTuG7777DikpKdiwYYP++zKZDPfeey8+/fRTXLp0CQsWLMDXX3+NtLS0TqmfbAfDjaxCVFQUvLy8sHHjRmzcuBEjRozQH3IE/txzuTGMPvroow6tb/r06cjLy8PmzZv106qqqvD5558bzNfceoUQzba7u7i4AADKyspaXbednR0mT56M7du3GwwRVlhYiPXr1+P222+Hu7u7sW+pXaZPnw6g6Xb78MMPATR0rwINf0zcuK2HDBkCAPpDkzdegiGVSjF48GCDeYg6ipcCkFVwcHDA/fffjw0bNqCyshLvv/++wffd3d0xfvx4vPvuu6ivr0fPnj2xZ88epKend2h9Tz31FFauXIk5c+bg+PHj8Pf3xzfffANnZ2eD+SIiIhAeHo5XXnkFubm5cHd3x3//+99mz3UNGzYMAPDCCy9gypQpsLOzwyOPPNLs+v/5z38iLi4Ot99+O5577jnY29tj9erVqK2txbvvvtuh99QekZGReOKJJ/D555+jrKwMEyZMwJEjR/DVV18hOjoad9xxBwDgq6++wqeffoqZM2ciPDwc5eXl+OKLL+Du7q4PyCeffBKlpaW48847ERgYiMzMTKxYsQJDhgxB//79O+09kI0wX6MmkWnFxcUJAEIikYjs7Owm38/JyREzZ84UHh4eQqFQiIceekjk5eU1abNvz6UAQgiRmZkp7rvvPuHs7Cy8vb3FokWLxO7du5tcCnD27FkRFRUlXF1dhbe3t3jqqafEqVOnBACxdu1a/XwajUY8//zzwsfHR0gkEoMW/BtrFEKIEydOiClTpghXV1fh7Ows7rjjDnHo0CGDeRrfy40t+fv3729SZ3NuvBRACCHq6+vF8uXLRWhoqHBwcBBBQUFi6dKloqamxqC22bNni+DgYCGXy4VSqRT33HOPOHbsmH6ezZs3i8mTJwulUilkMpkIDg4WCxYsEPn5+a3WRNQeEiE6eEaZiIiom+I5NyIisjoMNyIisjoMNyIisjoMNyIisjoMNyIisjoMNyIisjoWcRG3TqdDXl4e3NzcjLrnFhERWQ8hBMrLyxEQEACptPV9M4sIt7y8vE4bK4+IiCxLdnY2AgMDW53HIsLNzc0NQMMb6qwx84iIqHtTq9UICgrSZ0JrLCLcGg9Furu7M9yIiGxce05PsaGEiIisDsONiIisDsONiIisDsONiIisDsONiIisDsONiIisDsONiIiapaqqR3KuChqtztylGM0irnMjIqKulVZUgce//AP5qhq4yu0xMtQLY3p7Y2zvHujn2/2HQmS4ERGRgTM5Kjyx9ghKK+sglQAVtRrsPV+EveeLAADerjKMDvfG2PAeGNvbG0FezmauuCmGGxER6R2+XIInvzqGiloNBgcqsGbucBSoanAw7QoOXirB0fRSXKmow0+n8vDTqTwAQJCXE8aGe2NMb2+MCe8Bb1e5md8FIBFCCHMX0Ra1Wg2FQgGVSsXht4iIOsnec4V47rsTqNXoMCrMC1/MuQ1ujg4G89RpdEjKuoqDl0pwKO0KTmaXQaMzjJEIPzeMCW84hDkyrAdc5abZjzImCxhuRESEbUm5eHnTKWh1AlH9fbHy0aFwdLBrc7mKWg2Oppfq9+zO5asNvm8nlSAyUIGxvb0xJtwbo8K8Ony+juFGRETt9nViBt7YngIAuH9oT7z74GDY23Wsmb6kohaJl0twMK0Ehy5dQWZJlf57YT4u2PfyxA7XaUwW8JwbEZGNEkJg5b40fBB3AQAwd0wvvHHPLZBKO94J2cNVjnsGB+CewQEAgJyrVTiUVoKDl64gpIeLSepuD+65ERHZIJ1O4F+7zuHL39MBAIuj+mDRpD7dusWfe25ERNQijVaHV7ecwebjOQCAN+65BfNuDzVzVabFcCMisiE19Vos2pCEX1IKYSeV4N0HBuOBYYHmLsvkGG5ERDaiolaDBd8cw8G0EsjspVg5eygmD/Azd1mdguFGRGQDrlbWYe66oziVXQYXmR2+eOI2jAn3NndZnYbhRkRk5QrVNXj8yz9wobACHs4O+OovIxAZ5GHusjoVw42IyIplllTisf/7AzlXq+HrLse380eij6+bucvqdAw3IiIrdS5fjTlrjqC4vBYhPZzx7fyR3XKQ485g1CXosbGxGD58ONzc3KBUKhEdHY3U1NQ2lysrK0NMTAz8/f0hl8vRt29f7Nq1q8NFExFR645nXsWs1YkoLq9FhJ8bNj0z2maCDTByzy0hIQExMTEYPnw4NBoNXnvtNUyePBlnz56Fi0vzV57X1dXhrrvuglKpxObNm9GzZ09kZmbCw8PDFPUTEdENDlwoxoJvjqO6XothIZ5Y88RwKJwd2l7QihgVbrt37zZ4vm7dOiiVShw/fhzjx49vdpk1a9agtLQUhw4dgoNDw8bt1atXx6olIrJSpZV1SMq6iup6LarrtKip1177Wofq+mvP665Na+65wfca7pw9vq8PPvufW+Ess70zUDf1jlUqFQDAy8urxXl+/PFHjB49GjExMdi+fTt8fHzw6KOPYsmSJbCza37E6draWtTW1uqfq9XqZucjIrIGxzOvYt66o1BV15vsNaOHBODdByMhs+/YAMiWrsPhptPpsHjxYowdOxYDBw5scb7Lly9j3759eOyxx7Br1y6kpaXhueeeQ319PZYtW9bsMrGxsVi+fHlHSyMishgJF4rxzLVDiD09nBDo6QQnmR2cHBoejtd97SSzg6P+a2nD96/7nvO177vK7eHhLDP3WzOrDg+c/Oyzz+Lnn3/G77//jsDAlodu6du3L2pqapCenq7fU/vwww/x3nvvIT8/v9llmttzCwoK4sDJRGRVfjyVh5d/OIl6rbDpQ4jt1ekDJy9cuBA7duzAgQMHWg02APD394eDg4PBIcj+/fujoKAAdXV1kMma/nUhl8shl5v/NuVERJ3l68QMLPsxBUIA90YG4IOHbPcQYmcwaksKIbBw4UJs3boV+/btQ2ho26NIjx07FmlpadDpdPppFy5cgL+/f7PBRkRkzYQQ+HfcBbyxvSHY5owOwcezhjDYTMyorRkTE4Nvv/0W69evh5ubGwoKClBQUIDq6mr9PHPmzMHSpUv1z5999lmUlpZi0aJFuHDhAnbu3Im33noLMTExpnsXREQWQKcTWPZjCj7eexFAwz3Ult834KZuDkrNM+qw5KpVqwAAEydONJi+du1azJ07FwCQlZUFqfTPzAwKCsIvv/yCF198EYMHD0bPnj2xaNEiLFmy5OYqJyKyIHUaHV7ZdAo/nsqDRAIsv28A5ozuZe6yrBbvxE1E1Mmq6jR45tsTOHChGPZSCT54OBIzhvQ0d1kWh3fiJiLqJsqq6vCXdUeRlFUGJwc7rPqfWzGxn9LcZVk9hhsRUScpUNVgzpqGW80onBywZu5wDAvxNHdZNoHhRkTUCS4XV+DxL48gt6zhVjPfzB+JvjZwq5nuguFGRGRiybkqPLHmCEoq6xDq7YKv542wqRH5uwOGGxGRCR26dAVPf30cFbUaDAhwx1fzRsDblYNSdDWGGxGRiexOLsAL3yehTqvDyFAv/N8Tt8HN0bZuNdNdMNyIiExg49EsLN1yBjoBTL7FF/+ZPRSODs3f+YQ6H8ONiOgmfZZwCW//fB4A8PBtgXhr5iDY23E4LXOymXDbe64QB9NKcNctvhgd3sPc5RCRFdDqBN7ZfR6fH7gMAFgwIQyvTo2ARMLhtMzNZsLt13OF+P5INpxldgw3IropOVersOlYDjYdy0aeqgYAsHRaBBZMCDdzZdTIZsKtj7Lh+pKLReVmroSILFGdRoe95wqx4Wg2DlwsRuPAhQonB7x+zy14cFjrt/+irmUz4dZ48eTFwgozV0JEliStqAI/HMvGf4/noKSyTj99THgPzBoehCkD/Ng40g3ZTLj18XUFAGSUVKKmXssPI1EX0ekE1DX1qKrToqpOi5p67bWvNdd9rW3ma02T6VqdQB+lKwYHKjA4yAO3+Lt3ys9ydZ0WO8/kY+PRLBzNuKqf7uMmx0PDAvHwbUHo5e1i8vWS6dhMuCnd5HB3tIe6RoP0K5Xo78+7CxB1tisVtfif//sD5wtMdzrgTK4KW5JyAQD2Ugn6+blhcKAHIgMVGBzogb6+rh3uVDyTo8KGo1n48WQeyms1AACpBLgzQolZw4NxRz8fdkFaCJsJN4lEgr6+bjiWeRUXCssZbkSdTKcTeOmHU/pgc7CTwMnBDk4yOzjL7K/72u6Gr+3hJJM2O49OAOfy1TidU4bTOSqUVNYhJU+NlDw1vj/SsF5HBykGBCgwOFCByEAPDA5UoFcPlxZvCKqqrsePJ3Ox4Wg2UvLU+unBXs6YNTwID9waCD+FY6dvLzItmwk3oOHQ5LHMqzzvRtQFVh+4jAMXiuHoIMW2mLGI8DPNH5RTB/oBAIQQyC2rxukcFU7llOF0tgrJuSqU12pwPPMqjmf+eTjRzdG+4VDmdXt42aVV2Hg0GzvP5KNWowMAyOykmDrQD48MD8KosB68Q7YFs61wY8ckUZc4nlmK9/ekAmi447Spgu16EokEgZ7OCPR0xvRB/gAa9hYvX6nEmdwynMpW4XROGVLy1Civ0eBgWgkOppU0+1r9fN3wyIggRA/pCU8Xmclrpa5nU+HGjkmizldWVYfn1ydBqxOYMSQAD98W1GXrlkol6K10RW+lK2YObWjNr9fqcKGwHKdzGsLuVLYKqYXlcLSX4r4hAZg1PBiRgQpeeG1lbCrc2DFJ1LmEEHhl02nkqWrQq4cz/jVzkNlDw8Gu4RzcgAAFZo8IBgDU1GshlUggs2dziLWyqf/Zxo5JnQDSr1Sauxwiq7P2YAZ+PVcImZ0UKx+9Fa7y7vn3s6ODHYPNytnU/25jxyQAXCjkeTciUzqdU4bYn88BAP52T38M7Kkwc0Vky2wq3IA/D03yvBuR6ahr6rFwfRLqtQJTB/jh8VEh5i6JbJzthRs7JolMSgiBpVvOIKu0CoGeTnjnwcFmP89GZHPhxo5JItNafyQLO0/nw14qwYrZQ6Fw4p2nyfxsLtxu7Jgkoo47l6/G8p/OAgCWTI3A0GBPM1dE1MDmwo0dk0SmUVmrQcz6E6jT6HBnhBLzbw81d0lEejYXbuyYJDKN17cn43JxJfzcHfH+Q5Ecqoq6FZsLN+DPQ5NpRTzvRtQRm4/nYMuJXEglwH9mD4UXh6yibsY2w03JPTeijkorKsfr25IBAC/d1RcjQr3MXBFRU7YZbrzWjahDauq1iPkuCdX1Wtze2xvPTuxt7pKImmVUuMXGxmL48OFwc3ODUqlEdHQ0UlNT2738hg0bIJFIEB0dbWydJtV4zi2jpBK1GnZMErXX8p/OIrWwHN6ucnw4KxJ2PM9G3ZRR4ZaQkICYmBgcPnwYcXFxqK+vx+TJk1FZ2XbXYUZGBl555RWMGzeuw8WayvUdk5eL2TFJ1B4/nsrD90eyIJEAH80aAqUbb+BJ3ZdRo5ru3r3b4Pm6deugVCpx/PhxjB8/vsXltFotHnvsMSxfvhy//fYbysrKOlSsqUgkEvTxdcNx3pWbqF0yrlTitS1nAAAL7+iN2/t4m7kiotbd1Dk3lUoFAPDyav2E8t///ncolUrMnz//ZlZnUn3ZMUnULrUaLRZ+fwIVtRqM6OWFRZP6mLskojZ1+H4UOp0OixcvxtixYzFw4MAW5/v999/x5Zdf4uTJk+1+7draWtTW1uqfq9XqjpbZInZMErVP7K7zSM5Vw9PZAR/PHgJ7O5vsQyML0+FPaUxMDJKTk7Fhw4YW5ykvL8fjjz+OL774At7e7T+MERsbC4VCoX8EBZn+Tr7smCRq2y8pBVh3KAMA8MHDkfBXOJm3IKJ2kgghhLELLVy4ENu3b8eBAwcQGtrykDsnT57E0KFDYWf35x2vdTodAEAqlSI1NRXh4eFNlmtuzy0oKAgqlQru7qY5P1aorsHIt/ZCKgHO/WMq5Pa8KzfR9XKuVmH6x79BXaPB0+PD8Nr0/uYuiWycWq2GQqFoVxYYdVhSCIHnn38eW7duRXx8fKvBBgARERE4c+aMwbS//e1vKC8vx8cff9ziHplcLodcLjemNKM1dkyqazS4XFzJphKi69RrdXj++ySoazQYEuSBVyb3M3dJREYxKtxiYmKwfv16bN++HW5ubigoKAAAKBQKODk1HK6YM2cOevbsidjYWDg6OjY5H+fh4QEArZ6n6wrsmCRq2X/2XkRSVhncHO2xYvZQyOx5no0si1Gf2FWrVkGlUmHixInw9/fXPzZu3KifJysrC/n5+SYvtDOwY5KoqbSiCnyWcAkA8Pb9gxHk5WzmioiMZ/RhybbEx8e3+v1169YZs8pOxY5JIkNCCLyxPRn1WoFJEUpMH+Rn7pKIOsSmjzWwY5LI0I+n8nDoUgnk9lK8ed8ASCQcXossk02HG8eYJPqTuqYe/9x5DgDw/J29eTiSLJpNhxvHmCT604d7LqC4vBZh3i54anyYucshuik2HW6NHZMAz7uRbUvOVeHrxAwAwN9nDOR1n2TxbDrcAHZMEul0An/blgydAO6NDOCgyGQVbD7c2DFJtm7jsWyczC6Dq9wef7ubo5CQdWC4sWOSbFhJRS3e/vk8AOClu/rC1533aCPrYPPhxo5JsmXv7D4PVXU9+vu7Y87oEHOXQ2QyNh9uSjc53NgxSTboWEYpfjiWAwD4Z/RA3sqGrIrNf5olEol+743n3chWaLQ6/G1bMgDgkeFBGBbiaeaKiEzL5sMNYMck2Z51hzJwvqAcns4OWDI1wtzlEJkcww1Ab3ZMkg0pUNXg33EXAACvTouAp4vMzBURmR7DDX/uubFjkmzBP3aeRWWdFrcGe+ChYaa/yz1Rd8BwAzsmyXYcuFCMnafzIZUA/4weBKmUAyOTdWK4gR2TZBtq6rV4Y3tDE8ncMaG4JYA36CXrxXADOybJNnx+4DIySqqgdJPjxbv6mLscok7FcLuGHZNkzTJLKrFyfxoA4PV7boGbo4OZKyLqXAy3a9gxSdZKCIE3f0xBnUaH23t7457B/uYuiajTMdyuYcckWatfUgqxP7UYMjsp/j6Dd9cm28Bwu4Ydk2SNKms1+PtPKQCABRPCEObjauaKiLoGw+0adkySNfrPvovIU9UgyMsJMXf0Nnc5RF2G4XYNOybJ2qQWlOPL39IBAG/eOwCODry7NtkOhtt12DFJ1kIIgde3JUOjE5h8iy8m9fc1d0lEXcre3AV0J+yYJGMcvlyCOo0O4UpX+Ls7dqvRPracyMWRjFI4OdjhjXtvMXc5RF2O4XYdfcck99yoDftTi/CXtUf1z50c7BDq7YJwpSvCrv0b7uOCMG9XOMm69nCgqqoeb+06BwB4YVIfBHo6d+n6iboDhtt1+lzbc8ssqUKtRgu5Pc9RUFNCCHz060UAgLerDGVV9aiu1+Jsvhpn89VN5u/p4YQwHxeE+7jq/w33cYWvu7xT2vLf23MeJZV16KN0xfzbQ03++kSWgOF2HV/3ho7J8hoNLhdXor8/x96jphIuFONUdhkcHaT4edF4eDg7ILu0CpeLK3GpuOLPf69UorSyDrll1cgtq8ZvF68YvI6LzA5h1wIvxMsZbo4OcJbbwUVmD2eZHVzk9nCSGT53ltlBbi9tMRRPZZfhuz+yAAD/iB4ImT1Pq5NtYrhdp7Fj8njmVVwsqmC4URNCCHy8t2Gv7X9GhsDHTQ4A10LKFVEwbNworazD5esC71JxJS4XVyCztAqVdVqcyVXhTK7KqBrspJKGsLsWes5yOzjL7OEis8PFogoIAdw/tCdGhfUwzZsmskAMtxv0Ubo2hBubSqgZv6ddQVJWGeT2Ujw9IazN+b1cZPBy8cJtvbwMptdpdMgqrdLv6eVcrUJVnRaVtZqGf+s0qKrVoqq+4d/KOg1q6nUAAK1OoLxGg/IaTbPrdHO0x9Lp/W/+zRJZMIbbDfrwWjdqgRACH1871/boyGAo3Rw7/Foyeyl6K13RW9n+EUO0OoGqOo1BCF4fhJV1GlTXaTG8l5d+j5LIVhkVbrGxsdiyZQvOnz8PJycnjBkzBu+88w769evX4jJffPEFvv76ayQnN9xHatiwYXjrrbcwYsSIm6u8k7BjklqSeLkExzKvQmYvxTMTwrt8/XZSCdwcHTiiP1E7GHW2OSEhATExMTh8+DDi4uJQX1+PyZMno7Ky5eGq4uPjMXv2bOzfvx+JiYkICgrC5MmTkZube9PFd4YbOyaJGjXutT0yPAi+7h3fayOizicRQoiOLlxcXAylUomEhASMHz++XctotVp4enpi5cqVmDNnTruWUavVUCgUUKlUcHfv3CYPIQQGL9+D8hoNfl40jk0lBKDhgu1HPj8MmZ0UCX+dCH+Fk7lLIrI5xmTBTfUJq1QNXV5eXl5tzPmnqqoq1NfXG7VMV7p+jEkemqRG/7nWIfnQbYEMNiIL0OGGEp1Oh8WLF2Ps2LEYOHBgu5dbsmQJAgICEBUV1eI8tbW1qK2t1T9Xq5teGNuZ2DFJ1zuaUYpDl0rgYCfBcxxZn8gidHjPLSYmBsnJydiwYUO7l3n77bexYcMGbN26FY6OLZ+ziI2NhUKh0D+CgoI6WmaHsGOSrte41/bgsED09OBeG5El6FC4LVy4EDt27MD+/fsRGBjYrmXef/99vP3229izZw8GDx7c6rxLly6FSqXSP7KzsztSZoexY5IaHc+8it8uXoG9VILnJnKvjchSGHVYUgiB559/Hlu3bkV8fDxCQ9s3bt27776Lf/3rX/jll19w2223tTm/XC6HXG6+63Q4xiQ1atxru//Wngjy4gDERJbCqD23mJgYfPvtt1i/fj3c3NxQUFCAgoICVFdX6+eZM2cOli5dqn/+zjvv4PXXX8eaNWvQq1cv/TIVFd13r6hxjEmtTvCu3DbsZHYZEi4Uw04q4V2siSyMUeG2atUqqFQqTJw4Ef7+/vrHxo0b9fNkZWUhPz/fYJm6ujo8+OCDBsu8//77pnsXJsaOSQKAFdf22qKH9ERIDxczV0NExjD6sGRb4uPjDZ5nZGQYs4pugx2Ttu1Mjgp7zxdBKgEW3sm9NiJLw/thtIAdk7btP/sa9tpmDOmJUG/utRFZGoZbC9gxabtS8lSIO1sIiQQ810ZkoRhuLeAYk7Zrxd40AMC9gwOMGrWfiLoPhlsL2DFpm87lq7E7pQASCfA8z7URWSyGWwskEgn6KHlo0tas3New1zZ9kL/+vCsRWR6GWyv0lwOwqcQmXCgsx67khstYuNdGZNkYbq1gx6RtWbEvDUIA0wb6IcKPtzoismQMt1bwsKTtSCuqwI7TeQCA5+/sY+ZqiOhmMdxa0XhYkh2T1m/lvosQAph8iy9uCeBeG5GlY7i1gh2TtuFycQV+PNWw1/bCJO61EVkDhlsr2DFpG1buT4NOAFH9lRjYU2HucojIBBhubWDHpHXLuFKJ7Sd5ro3I2jDc2sCOSev2yf40aHUCE/v5IDLIw9zlEJGJMNzawMOS1iu7tApbknIB8FwbkbVhuLWBHZPWq3GvbVwfb9wa7GnucojIhBhubWDHpHXKuVqFzcdzAACLo7jXRmRtGG5tYMekdfo0/hI0OoGxvXtgWIiXucshIhNjuLUDOyatS15ZNTYdywYALJrU18zVEFFnYLi1AzsmrctnCZdQrxUYFeaFEaHcayOyRgy3duBhSetRoKrBhiPcayOydgy3dmDHpHXQ6QTe3X0edVodRvTywqgw7rURWSuGWzv4usvhJm/omEy/wo5JS1RZq8Ez3x7XX9e2+K4+kEgkZq6KiDoLw60dJBIJ+vg2HJq8UMhDk5Ymt6waD36WiD1nCyGzl+KjWUMwJtzb3GURUSdiuLUTOyYt04msq5ix8iDO5avh7SrD90+NQvTQnuYui4g6mb25C7AUvRubSrjnZjG2n8zF/24+jTqNDv393fF/T9yGnh5O5i6LiLoAw62dGvfcLhRxz6270+kE/v3rBazYlwYAiOrvi48fGQIXOT/uRLaCP+3tdGPHpNzezswVUXOq6jR4+YdT+Dm5AADwzIRw/HVKP0ilbB4hsiUMt3Zq7Jgsr9Ug/UolIvzczV0S3SBfVY2nvj6G5Fw1HOwkiL1/MB4cFmjusojIDNhQ0k7smOzeTmWXYcbKg0jOVcPLRYb1T41isBHZMIabEdgx2T3tOJ2Hh1cnoqi8Fv183bA9ZiyG9+IF2kS2jIcljcCOye5FCIGPfr2Ij/deBADcGaHEx48MgZujg5krIyJzM2rPLTY2FsOHD4ebmxuUSiWio6ORmpra5nKbNm1CREQEHB0dMWjQIOzatavDBZsTOya7j5p6LRZ+n6QPtqfGheKLObcx2IgIgJHhlpCQgJiYGBw+fBhxcXGor6/H5MmTUVnZ8pBUhw4dwuzZszF//nwkJSUhOjoa0dHRSE5OvuniuxrHmOweCtU1mLU6ETtP58NeKsE7DwzC/7v7FtixI5KIrpEIIURHFy4uLoZSqURCQgLGjx/f7DyzZs1CZWUlduzYoZ82atQoDBkyBJ999lm71qNWq6FQKKBSqeDubr4uRSEEBr+5B+W1GuxePI4dk2aQnKvCk18dQ4G6Bp7ODlj1P8MwKqyHucsioi5gTBbcVEOJSqUCAHh5tXzyPjExEVFRUQbTpkyZgsTExBaXqa2thVqtNnh0B+yYNK+fz+Tjwc8OoUBdg95KV2yLGctgI6JmdTjcdDodFi9ejLFjx2LgwIEtzldQUABfX1+Dab6+vigoKGhxmdjYWCgUCv0jKCioo2WaHDsmu54QAiv2XsSz351ATb0O4/v6YMtzYxDSw8XcpRFRN9XhcIuJiUFycjI2bNhgynoAAEuXLoVKpdI/srOzTb6OjmLHZNfbciIXH8RdAAD8ZWwvrHniNrizcYSIWtGhSwEWLlyIHTt24MCBAwgMbP1CWT8/PxQWFhpMKywshJ+fX4vLyOVyyOXyjpTW6dgx2bVq6rV4f09DR+4Ld/bGS5P7mbkiIrIERu25CSGwcOFCbN26Ffv27UNoaGiby4wePRp79+41mBYXF4fRo0cbV2k3cX3HZEWtxszVWL+1BzOQr6pBTw8nPHdHb3OXQ0QWwqhwi4mJwbfffov169fDzc0NBQUFKCgoQHV1tX6eOXPmYOnSpfrnixYtwu7du/HBBx/g/PnzePPNN3Hs2DEsXLjQdO+iC/m6y9GrhzO0OoE9KS2fN6SbV1pZh0/3N4zs//LkvnB04GDVRNQ+RoXbqlWroFKpMHHiRPj7++sfGzdu1M+TlZWF/Px8/fMxY8Zg/fr1+PzzzxEZGYnNmzdj27ZtrTahdGcSiUR/s8ttJ/PMXI11W7kvDeW1GvT3d0f0EN5glIja76auc+sq3eU6t0YZVyox8f14SCXA4dcmQenmaO6SrE5WSRUmfRiPeq3AN/NHYFwfH3OXRERm1mXXudmqXt4uGBLkAZ0AfjqV3/YCZLT39qSiXiswro83g42IjMZw66CZ1w5Nbj+Za+ZKrM+p7DL8dCoPEgnw6rQIc5dDRBaI4dZB9wz2h51UgtM5KqQV8Zo3UxFC4K1d5wA0/AExIEBh5oqIyBIx3Dqoh6sc4/t4A+DemyntTy3CH+mlkNlL8TKvaSOiDmK43YQ/uyZzYQF9Od2eRqtD7K7zABpGIunp4WTmiojIUjHcbsJdt/jCWWaH7NJqnMi6au5yLN5/T+TgYlEFPJwd8NxEXrBNRB3HcLsJzjJ7TB3QMIzY1iQemrwZVXUafHht/MiFd/SGwoljRxJRxzHcblLjocmdp/NRp9GZuRrLteb3dBSqaxHo6YTHR4eYuxwisnAMt5s0JrwHvF3luFpVjwMXis1djkW6UlGLzxIuAwD+d0o/yO05zBYR3RyG202yt5PivsgAAA2NJWS8FXsvoqJWg0E9Fbh3cIC5yyEiK8BwM4HGC7rjzhaivKbezNVYlvQrlfjujywAwNLpEZBKJWauiIisAcPNBAb2dEeYjwtqNTrsTuadAozx3i/nodEJ3NHPB2PCvc1dDhFZCYabCUgkEswc0jgcF+8U0F4nsq5i15kCSCXAq9P6m7scIrIiDDcTmXEt3A5euoJCdY2Zq+n+hBCIvTbM1oPDAtHPz83MFRGRNWG4mUhwD2cMC/GEEMCP3HtrU9zZQhzNuApHBylevKuvucshIivDcDOh64fjopZptDq8vbthmK35t4fCX8FhtojItBhuJnTPIH/YSyVIyVPjQmG5ucvptjYey8bl4kp4uciwYEK4ucshIivEcDMhTxcZJvZruLHmNg7H1azKWg3+HXcRAPDCnb3h7shhtojI9BhuJhY99M+uSZ2Odwq40Re/XcaVilqE9HDGoyM5zBYRdQ6Gm4lF9feFq9weuWXVOJbJOwVcr6i8Bp8faBhm669TIiCz58ePiDoHf7uYmKODHaYO5J0CmvPxrxdRVadFZJAHpg/yM3c5RGTFGG6doHE4rl1n8lGr0Zq5mu4hragCG45mAwBemxYBiYTDbBFR52G4dYJRYT3g6y6Hqroe8am8UwAAvLv7PLQ6gaj+vhgZ1sPc5RCRlWO4dQI7qUR/p4DtvOYNxzJKseds4bVhtvqZuxwisgEMt07S2DX567kiqKpt904BQgi8dW2YrVnDg9FbyWG2iKjzMdw6yS3+7ujr64o6jQ67k/PNXY7Z/JJSgBNZZXBysMOLUX3MXQ4R2QiGWyeRSCT6wZS3JdnmWJP1Wh3e2Z0KAHhqfBiU7o5mroiIbAXDrRPNGNJw3u1wegnyyqrNXE3X23AkC+lXKuHtKsPT48PMXQ4R2RCGWycK9HTGiFCvhjsFnLKtvTdVdT0++rVhmK1FUX3hKrc3c0VEZEsYbp0sWn9o0ra6JlfsvYiSyjqE+7jgkeFB5i6HiGyM0eF24MAB3HvvvQgICIBEIsG2bdvaXOa7775DZGQknJ2d4e/vj3nz5qGkpKQj9Vqcuwf5Q2YnxfmCcpzLV5u7nC5xqbgC6w5lAADeuHcAHOz4NxQRdS2jf+tUVlYiMjISn3zySbvmP3jwIObMmYP58+cjJSUFmzZtwpEjR/DUU08ZXawlUjg7/HmnABu55u1fO89BoxO4M0KJCX19zF0OEdkgo0+ETJs2DdOmTWv3/ImJiejVqxdeeOEFAEBoaCgWLFiAd955x9hVW6yZQ3tiz9lC/HgyD0umREAqtd6hp+JTi7DvfBHspRL87e7+5i6HiGxUpx8vGj16NLKzs7Fr1y4IIVBYWIjNmzdj+vTpnb3qbuOOCCXcHO2Rr6rBH+ml5i6n09RrdfjHjrMAgLljeiHMx9XMFRGRrer0cBs7diy+++47zJo1CzKZDH5+flAoFK0e1qytrYVarTZ4WDJHBztMH+gPwLqH4/omMROXiivRw0WG5yfxgm0iMp9OD7ezZ89i0aJFeOONN3D8+HHs3r0bGRkZeOaZZ1pcJjY2FgqFQv8ICrL8brvG4bh2nslHTb313SmgtLIOH/16AQDwypR+UDjxDttEZD6dHm6xsbEYO3Ys/vd//xeDBw/GlClT8Omnn2LNmjXIz29+WKqlS5dCpVLpH9nZ2Z1dZqcbGeoFf4Ujyms02H++yNzlmNyHcalQ12jQ398dD99m+X+MEJFl6/Rwq6qqglRquBo7OzsADYPqNkcul8Pd3d3gYemkUgnuuzZiibV1TZ7LV2P9H1kAgGX33gI7K26YISLLYHS4VVRU4OTJkzh58iQAID09HSdPnkRWVsMvt6VLl2LOnDn6+e+9915s2bIFq1atwuXLl3Hw4EG88MILGDFiBAICAkzzLixE401M958vRllVnZmrMQ0hBP7+01noBDB9kB9G8V5tRNQNGB1ux44dw9ChQzF06FAAwEsvvYShQ4fijTfeAADk5+frgw4A5s6diw8//BArV67EwIED8dBDD6Ffv37YsmWLid6C5Yjwc0eEnxvqtDrsOlNg7nJM4peUQiReLoHMXoql09j6T0Tdg0S0dGywG1Gr1VAoFFCpVBZ/iPKzhEt4++fzGBHqhR8WjDZ3OTelpl6Lu/6dgOzSaiy8ozdemcIbkRJR5zEmCzguUhe7LzIAEglwJL0UOVerzF3OTVlzMB3ZpdXwdZfj2Ynh5i6HiEiP4dbFAjycMCq04bzU9pOWe6eAInUNVu5LAwC8Oi0CLhz1n4i6EYabGUQPvdY1mZTbYsdod/fuL6moqtNiSJAHZkT2NHc5REQGGG5mMHWgP2T2UlwsqsBZC7xTwKnsMmw+ngOgofXfmsfKJCLLxHAzA4WTA6L6KwFY3qFJIQSW/5QCALh/aE8MDfY0c0VERE0x3MxkxrWbmG4/mQutznIOTf54Kg8nssrgLLPDX6dGmLscIqJmMdzMZGI/HyicHFCorrWY4biq6jSI3XUeAPDcxHD4KRzNXBERUfMYbmYit7fD3YMb7hTw5NfH8Je1R3DgQnG3bjD5LOEyCtQ1CPR0wpPjwsxdDhFRi9i/bUavTO6HInUN9p4vwv7UYuxPLUYfpSvmju2F+4cGwklmZ+4S9XKuVmF1wiUAwGvT+8PRofvURkR0I45Q0g1kXKnEukMZ2HQsG5V1DbfDUTg5YPaIYMwZHYIADyczVwjErD+BnafzMTLUCxueHgWJhB2SRNS1jMkChls3oq6px6ZjOfjqUAayShtGL7GTSjB1gB/m3d4LtwZ7miVUjqSX4uHViZBKgJ+evx0DAhRdXgMREcPNwml1AnvPFWLtwQwkXi7RTx8cqMBfxvbC3YMCILPvmtOlWp3AfSt/R0qeGrNHBCP2/kFdsl4iohsx3KzIuXw11h5Mx7aTeajT6AAAPm5yPD4qBI+ODIa3q7xT17/xaBaW/PcM3BztEf/KRPTo5PUREbWE4WaFSipq8f2RLHydmImi8loAgMxeihmRAfjL2FDcEmD67VJeU4873o/HlYo6/O3u/uyQJCKzYrhZsTqNDj8n52PNwQycyi7TTx8Z6oVHRwZjRKgX/BWmaUCJ3XUOqw9cRpi3C3YvHt9lh0KJiJpjTBbwUgALI7OXYsaQnpgxpCdOZF3Fmt/T8XNyAf5IL8Uf6aUAAH+FI24N9sTQYA/cGuKJAQHukNsb17qffqUSaw6mAwD+dk9/BhsRWRSGmwW7NdgTtz7qiXxVNb49nIn41GKcLyhHvqoGO8/kY+eZfAANgTgwwL1h/hBP3Brs2eboIv/aeRb1WoEJfX1wRz9lV7wdIiKT4WFJK1NVp8GpbBVOZF1FUtZVnMgqQ2llXZP5AhSOGHot6IaFeOIWf3f93tmBC8WYs+YI7KUS7F48Dr2Vbl39NoiImuBhSRvmLLPH6PAeGB3ecENUIQQyS6pwIutqwyOzDOcL1MhT1SDvdD52nm7Yu5PbSzGopwK3hnji13OFAIDHR4cw2IjIInHPzQZV1mpwKqcMJzIb9uySsq7ialW9wTyezg6If+UOKJwdzFQlEZEh7rlRq1zk9hgT7o0x4d4AGvbu0q9U4kRWGU5kXUVaYQWeHBfKYCMii8VwI0gkEoT5uCLMxxUPDgs0dzlERDeN/d1ERGR1GG5ERGR1GG5ERGR1GG5ERGR1GG5ERGR1GG5ERGR1GG5ERGR1LOI6t8ZBVNRqtZkrISIic2nMgPYMrGUR4VZeXg4ACAoKMnMlRERkbuXl5VAoFK3OYxFjS+p0OuTl5cHNzQ0SicTc5bSLWq1GUFAQsrOzLW48TEutnXV3PUutnXV3PVPULoRAeXk5AgICIJW2flbNIvbcpFIpAgMtc1god3d3i/sQNrLU2ll317PU2ll317vZ2tvaY2vEhhIiIrI6DDciIrI6DLdOIpfLsWzZMsjlcnOXYjRLrZ11dz1LrZ11d72urt0iGkqIiIiMwT03IiKyOgw3IiKyOgw3IiKyOgw3IiKyOgy3DoiNjcXw4cPh5uYGpVKJ6OhopKamtrrMunXrIJFIDB6Ojo5dVPGf3nzzzSZ1REREtLrMpk2bEBERAUdHRwwaNAi7du3qomr/1KtXryZ1SyQSxMTENDu/Obf3gQMHcO+99yIgIAASiQTbtm0z+L4QAm+88Qb8/f3h5OSEqKgoXLx4sc3X/eSTT9CrVy84Ojpi5MiROHLkSJfVXV9fjyVLlmDQoEFwcXFBQEAA5syZg7y8vFZfsyOfN1PWDQBz585tUsPUqVPbfN3O3t7tqb25z7xEIsF7773X4mt29jZvz++/mpoaxMTEoEePHnB1dcUDDzyAwsLCVl+3oz8XLWG4dUBCQgJiYmJw+PBhxMXFob6+HpMnT0ZlZWWry7m7uyM/P1//yMzM7KKKDQ0YMMCgjt9//73FeQ8dOoTZs2dj/vz5SEpKQnR0NKKjo5GcnNyFFQNHjx41qDkuLg4A8NBDD7W4jLm2d2VlJSIjI/HJJ580+/13330X//nPf/DZZ5/hjz/+gIuLC6ZMmYKampoWX3Pjxo146aWXsGzZMpw4cQKRkZGYMmUKioqKuqTuqqoqnDhxAq+//jpOnDiBLVu2IDU1Fffdd1+br2vM583UdTeaOnWqQQ3ff/99q6/ZFdu7PbVfX3N+fj7WrFkDiUSCBx54oNXX7cxt3p7ffy+++CJ++uknbNq0CQkJCcjLy8P999/f6ut25OeiVYJuWlFRkQAgEhISWpxn7dq1QqFQdF1RLVi2bJmIjIxs9/wPP/ywuPvuuw2mjRw5UixYsMDElRln0aJFIjw8XOh0uma/3122NwCxdetW/XOdTif8/PzEe++9p59WVlYm5HK5+P7771t8nREjRoiYmBj9c61WKwICAkRsbGyX1N2cI0eOCAAiMzOzxXmM/bzdrObqfuKJJ8SMGTOMep2u3t5CtG+bz5gxQ9x5552tztPV2/zG339lZWXCwcFBbNq0ST/PuXPnBACRmJjY7Gt09OeiNdxzMwGVSgUA8PLyanW+iooKhISEICgoCDNmzEBKSkpXlNfExYsXERAQgLCwMDz22GPIyspqcd7ExERERUUZTJsyZQoSExM7u8wW1dXV4dtvv8W8efNaHUi7u2zv66Wnp6OgoMBgmyoUCowcObLFbVpXV4fjx48bLCOVShEVFWXW/weVSgWJRAIPD49W5zPm89ZZ4uPjoVQq0a9fPzz77LMoKSlpcd7uur0LCwuxc+dOzJ8/v815u3Kb3/j77/jx46ivrzfYfhEREQgODm5x+3Xk56ItDLebpNPpsHjxYowdOxYDBw5scb5+/fphzZo12L59O7799lvodDqMGTMGOTk5XVgtMHLkSKxbtw67d+/GqlWrkJ6ejnHjxulvK3SjgoIC+Pr6Gkzz9fVFQUFBV5TbrG3btqGsrAxz585tcZ7usr1v1LjdjNmmV65cgVar7Vb/DzU1NViyZAlmz57d6iC4xn7eOsPUqVPx9ddfY+/evXjnnXeQkJCAadOmQavVNjt/d9zeAPDVV1/Bzc2tzcN7XbnNm/v9V1BQAJlM1uSPnta2X0d+LtpiEXcF6M5iYmKQnJzc5jHt0aNHY/To0frnY8aMQf/+/bF69Wr84x//6Owy9aZNm6b/evDgwRg5ciRCQkLwww8/tOsvwu7gyy+/xLRp0xAQENDiPN1le1uj+vp6PPzwwxBCYNWqVa3O2x0+b4888oj+60GDBmHw4MEIDw9HfHw8Jk2a1CU1mMKaNWvw2GOPtdkY1ZXbvL2//8yBe243YeHChdixYwf2799v9C15HBwcMHToUKSlpXVSde3j4eGBvn37tliHn59fky6nwsJC+Pn5dUV5TWRmZuLXX3/Fk08+adRy3WV7N243Y7apt7c37OzsusX/Q2OwZWZmIi4uzuhbl7T1eesKYWFh8Pb2brGG7rS9G/32229ITU01+nMPdN42b+n3n5+fH+rq6lBWVmYwf2vbryM/F21huHWAEAILFy7E1q1bsW/fPoSGhhr9GlqtFmfOnIG/v38nVNh+FRUVuHTpUot1jB49Gnv37jWYFhcXZ7BX1JXWrl0LpVKJu+++26jlusv2Dg0NhZ+fn8E2VavV+OOPP1rcpjKZDMOGDTNYRqfTYe/evV36/9AYbBcvXsSvv/6KHj16GP0abX3eukJOTg5KSkparKG7bO/rffnllxg2bBgiIyONXtbU27yt33/Dhg2Dg4ODwfZLTU1FVlZWi9uvIz8X7SmUjPTss88KhUIh4uPjRX5+vv5RVVWln+fxxx8Xr776qv758uXLxS+//CIuXbokjh8/Lh555BHh6OgoUlJSurT2l19+WcTHx4v09HRx8OBBERUVJby9vUVRUVGzdR88eFDY29uL999/X5w7d04sW7ZMODg4iDNnznRp3UI0dKwFBweLJUuWNPled9re5eXlIikpSSQlJQkA4sMPPxRJSUn6rsK3335beHh4iO3bt4vTp0+LGTNmiNDQUFFdXa1/jTvvvFOsWLFC/3zDhg1CLpeLdevWibNnz4qnn35aeHh4iIKCgi6pu66uTtx3330iMDBQnDx50uBzX1tb22LdbX3eOrvu8vJy8corr4jExESRnp4ufv31V3HrrbeKPn36iJqamhbr7ort3VbtjVQqlXB2dharVq1q9jW6epu35/ffM888I4KDg8W+ffvEsWPHxOjRo8Xo0aMNXqdfv35iy5Yt+uft+bkwBsOtAwA0+1i7dq1+ngkTJognnnhC/3zx4sUiODhYyGQy4evrK6ZPny5OnDjR5bXPmjVL+Pv7C5lMJnr27ClmzZol0tLSWqxbCCF++OEH0bdvXyGTycSAAQPEzp07u7jqBr/88osAIFJTU5t8rztt7/379zf7+WisT6fTiddff134+voKuVwuJk2a1OQ9hYSEiGXLlhlMW7Fihf49jRgxQhw+fLjL6k5PT2/xc79///4W627r89bZdVdVVYnJkycLHx8f4eDgIEJCQsRTTz3VJKTMsb3bqr3R6tWrhZOTkygrK2v2Nbp6m7fn9191dbV47rnnhKenp3B2dhYzZ84U+fn5TV7n+mXa83NhDN7yhoiIrA7PuRERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdVhuBERkdX5/4E9f04oLM3HAAAAAElFTkSuQmCC\n"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 500x300 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 500x300 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "# 绘制曲线\n",
        "plt.figure(figsize=(5, 3))\n",
        "plt.plot(np.arange(1, max_epoch + 1), lossv)\n",
        "plt.title('validation loss')\n",
        "\n",
        "plt.figure(figsize=(5,3))\n",
        "plt.plot(np.arange(1, max_epoch + 1), top1AccuracyList)\n",
        "plt.title('validation top1 accuracy')\n",
        "\n",
        "plt.figure(figsize=(5,3))\n",
        "plt.plot(np.arange(1, max_epoch + 1), top5AccuracyList)\n",
        "plt.title('validation top5 accuracy')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "fyWGvlbHup5w"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "provenance": []
    },
    "gpuClass": "standard",
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}